<?php

namespace UsersModule;

use \Nette\Application\UI\Form;

class RegisterPresenter extends BasePresenter{

  public function actionDefault(){
    if($this->user->isLoggedIn()){
      $this->flashMessage('Již jste zaregistrován', 'error');
      $this->redirect(':Lessons:Default:default');
    }
  }
  
  public function createComponentRegisterForm(){
    $registerForm = new Form();
    
    $registerForm->addText('login', 'Přihlašovací jméno')
        ->addRule(Form::FILLED, 'Přihlašovací jméno musí být vyplněno')
        ->addRule(Form::MAX_LENGTH, 'Přihlašovací jméno může být maximálně 20 znaků dlouhé', 20)
        ->addRule(Form::MIN_LENGTH, 'Přihlašovací jméno musí být minimálně 3 znaky dlouhé', 3);
    
    $registerForm->addPassword('password', 'Heslo')
        ->addRule(Form::FILLED, 'Heslo musí být vyplněno')
        ->addRule(Form::MAX_LENGTH, 'Heslo může být maximálně 20 znaků dlouhé', 20)
        ->addRule(Form::MIN_LENGTH, 'Heslo musí být minimálně 3 znaky dlouhé', 3);
    
    $registerForm->addPassword('password_again', 'Heslo znovu')
        ->addRule(Form::EQUAL, 'Hesla musí být totožná', $registerForm['password']);
    
    $registerForm->addText('email', 'Email')
        ->addRule(Form::FILLED, 'Email musí být vyplněn')
        ->addRule(Form::EMAIL, 'Email musí být validní');
    
    $registerForm->addCheckbox('rules', 'Souhlasím s podmínkami')
        ->addRule(Form::EQUAL, 'Musíte souhlasit s našimi podmínkami', TRUE);
    $registerForm->addSubmit('send', 'Registrovat');
    $registerForm->onSuccess[] = callback($this, 'registerFormSuccess');
    
    return $registerForm;
  }
  
  public function registerFormSuccess(Form $form){
    $values = $form->getValues();
    $um = $this->context->createUserManager();
    
    if($um->isLoginFree($values['login'])){
      $form->addError('Toto přihlašovací jméno je již použito, zvolte jiné');
      return false;
    }
    
    if($um->isEmailFree($values['email'])){
      $form->addError('Toto email je již používán, zvolte jiný');
      return false;
    }
    
    try{
      $um->registerNewUser($values['login'], $values['password'], $values['email']);
    }catch(\Exception $e){
      echo $e;exit();
    }
    
    $this->flashMessage('Na Vámi zadanou emailovou adresu jsme poslali potvrzovací email, pomocí něho svoji registraci aktivujete', 'info');
    $this->redirect(':Lessons:Default:default');
    
  }
  
}
